<?php
// +----------------------------------------------------------------------
// | ThinkPHP
// +----------------------------------------------------------------------
// | Copyright (c) 2007 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: liu21st <liu21st@gmail.com>
// +----------------------------------------------------------------------
// $Id$

//公共函数

/*
 * 将数组进行缓存
 * @param array，缓存数组
 * @param file, 目标文件
 */
function cache_array($array, $file)
{
	//判断文件是否存在
	if(!file_exists($file))
	{
		$r = file_put_contents($file,'temp');
	}
	//写入文件
	if(is_array($array) && !empty($array))
	{
		$array = var_export($array,'true');
		$array = "<?php return ".$array."?>";
		$r = file_put_contents($file,$array);
	}
	return $r;
}

/*
 * 将二维数组按子数组的某个键值重新组装,
 * @param array,目标数组
 * @param key, 索引所用的键值
 */
 function array_reindex($array, $key = 'id')
{
	$temp = array();
	if(empty($array) || !is_array($array))
	{
		return '';
	}
	foreach ($array as $r)
	{
		$temp[$r[$key]] = $r;
	}
	return $temp;
}


function toDate($time, $format = 'Y-m-d H:i:s') {
	if (empty ( $time )) {
		return '';
	}
	$format = str_replace ( '#', ':', $format );
	return date ($format, $time );
}

function get_client_ip() {
	if (getenv ( "HTTP_CLIENT_IP" ) && strcasecmp ( getenv ( "HTTP_CLIENT_IP" ), "unknown" ))
		$ip = getenv ( "HTTP_CLIENT_IP" );
	else if (getenv ( "HTTP_X_FORWARDED_FOR" ) && strcasecmp ( getenv ( "HTTP_X_FORWARDED_FOR" ), "unknown" ))
		$ip = getenv ( "HTTP_X_FORWARDED_FOR" );
	else if (getenv ( "REMOTE_ADDR" ) && strcasecmp ( getenv ( "REMOTE_ADDR" ), "unknown" ))
		$ip = getenv ( "REMOTE_ADDR" );
	else if (isset ( $_SERVER ['REMOTE_ADDR'] ) && $_SERVER ['REMOTE_ADDR'] && strcasecmp ( $_SERVER ['REMOTE_ADDR'], "unknown" ))
		$ip = $_SERVER ['REMOTE_ADDR'];
	else
		$ip = "unknown";
	return ($ip);
}
// 缓存文件
function cmssavecache($name = '', $fields = '') {
	$Model = D ( $name );
	$list = $Model->select ();
	$data = array ();
	foreach ( $list as $key => $val ) {
		if (empty ( $fields )) {
			$data [$val [$Model->getPk ()]] = $val;
		} else {
			// 获取需要的字段
			if (is_string ( $fields )) {
				$fields = explode ( ',', $fields );
			}
			if (count ( $fields ) == 1) {
				$data [$val [$Model->getPk ()]] = $val [$fields [0]];
			} else {
				foreach ( $fields as $field ) {
					$data [$val [$Model->getPk ()]] [] = $val [$field];
				}
			}
		}
	}
	$savefile = cmsgetcache ( $name );
	// 所有参数统一为大写
	$content = "<?php\nreturn " . var_export ( array_change_key_case ( $data, CASE_UPPER ), true ) . ";\n?>";
	file_put_contents ( $savefile, $content );
}

function cmsgetcache($name = '') {
	return DATA_PATH . '~' . strtolower ( $name ) . '.php';
}
function getStatus($status, $imageShow = true) {
	switch ($status) {
		case 0 :
			$showText = '禁用';
			$showImg = '<IMG SRC="' . WEB_PUBLIC_PATH . '/Images/locked.gif" WIDTH="20" HEIGHT="20" BORDER="0" ALT="禁用">';
			break;
		case 2 :
			$showText = '待审';
			$showImg = '<IMG SRC="' . WEB_PUBLIC_PATH . '/Images/prected.gif" WIDTH="20" HEIGHT="20" BORDER="0" ALT="待审">';
			break;
		case - 1 :
			$showText = '删除';
			$showImg = '<IMG SRC="' . WEB_PUBLIC_PATH . '/Images/del.gif" WIDTH="20" HEIGHT="20" BORDER="0" ALT="删除">';
			break;
		case 1 :
		default :
			$showText = '正常';
			$showImg = '<IMG SRC="' . WEB_PUBLIC_PATH . '/Images/ok.gif" WIDTH="20" HEIGHT="20" BORDER="0" ALT="正常">';

	}
	return ($imageShow === true) ?  $showImg  : $showText;

}
function getDefaultStyle($style) {
	if (empty ( $style )) {
		return 'blue';
	} else {
		return $style;
	}

}
function IP($ip = '', $file = 'UTFWry.dat') {
	$_ip = array ();
	if (isset ( $_ip [$ip] )) {
		return $_ip [$ip];
	} else {
		import ( "ORG.Net.IpLocation" );
		$iplocation = new IpLocation ( $file );
		$location = $iplocation->getlocation ( $ip );
		$_ip [$ip] = $location ['country'] . $location ['area'];
	}
	return $_ip [$ip];
}

function getNodeName($id) {
	if (Session::is_set ( 'nodeNameList' )) {
		$name = Session::get ( 'nodeNameList' );
		return $name [$id];
	}
	$Group = D ( "Node" );
	$list = $Group->getField ( 'id,name' );
	$name = $list [$id];
	Session::set ( 'nodeNameList', $list );
	return $name;
}

function get_pawn($pawn) {
	if ($pawn == 0)
		return "<span style='color:green'>没有</span>";
	else
		return "<span style='color:red'>有</span>";
}
function get_patent($patent) {
	if ($patent == 0)
		return "<span style='color:green'>没有</span>";
	else
		return "<span style='color:red'>有</span>";
}


function getNodeGroupName($id) {
	if (empty ( $id )) {
		return '未分组';
	}
	if (isset ( $_SESSION ['nodeGroupList'] )) {
		return $_SESSION ['nodeGroupList'] [$id];
	}
	$Group = D ( "Group" );
	$list = $Group->getField ( 'id,title' );
	$_SESSION ['nodeGroupList'] = $list;
	$name = $list [$id];
	return $name;
}

function getCardStatus($status) {
	switch ($status) {
		case 0 :
			$show = '未启用';
			break;
		case 1 :
			$show = '已启用';
			break;
		case 2 :
			$show = '使用中';
			break;
		case 3 :
			$show = '已禁用';
			break;
		case 4 :
			$show = '已作废';
			break;
	}
	return $show;

}

function showStatus($status, $id) {
	switch ($status) {
		case 0 :
			$info = '<a href="javascript:resume(' . $id . ')">恢复</a>';
			break;
		case 2 :
			$info = '<a href="javascript:pass(' . $id . ')">批准</a>';
			break;
		case 1 :
			$info = '<a href="javascript:forbid(' . $id . ')">禁用</a>';
			break;
		case - 1 :
			$info = '<a href="javascript:recycle(' . $id . ')">还原</a>';
			break;
	}
	return $info;
}

/**
 +----------------------------------------------------------
 * 获取登录验证码 默认为4位数字
 +----------------------------------------------------------
 * @param string $fmode 文件名
 +----------------------------------------------------------
 * @return string
 +----------------------------------------------------------
 */
function build_verify($length = 4, $mode = 1) {
	return rand_string ( $length, $mode );
}


function getGroupName($id) {
	if ($id == 0) {
		return '无上级组';
	}
	if ($list = F ( 'groupName' )) {
		return $list [$id];
	}
	$dao = D ( "Role" );
	$list = $dao->findAll ( array ('field' => 'id,name' ) );
	foreach ( $list as $vo ) {
		$nameList [$vo ['id']] = $vo ['name'];
	}
	$name = $nameList [$id];
	F ( 'groupName', $nameList );
	return $name;
}
function sort_by($array, $keyname = null, $sortby = 'asc') {
	$myarray = $inarray = array ();
	# First store the keyvalues in a seperate array
	foreach ( $array as $i => $befree ) {
		$myarray [$i] = $array [$i] [$keyname];
	}
	# Sort the new array by
	switch ($sortby) {
		case 'asc' :
			# Sort an array and maintain index association...
			asort ( $myarray );
			break;
		case 'desc' :
		case 'arsort' :
			# Sort an array in reverse order and maintain index association
			arsort ( $myarray );
			break;
		case 'natcasesor' :
			# Sort an array using a case insensitive "natural order" algorithm
			natcasesort ( $myarray );
			break;
	}
	# Rebuild the old array
	foreach ( $myarray as $key => $befree ) {
		$inarray [] = $array [$key];
	}
	return $inarray;
}

/**
	 +----------------------------------------------------------
 * 产生随机字串，可用来自动生成密码
 * 默认长度6位 字母和数字混合 支持中文
	 +----------------------------------------------------------
 * @param string $len 长度
 * @param string $type 字串类型
 * 0 字母 1 数字 其它 混合
 * @param string $addChars 额外字符
	 +----------------------------------------------------------
 * @return string
	 +----------------------------------------------------------
 */
function rand_string($len = 6, $type = '', $addChars = '') {
	$str = '';
	switch ($type) {
		case 0 :
			$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' . $addChars;
			break;
		case 1 :
			$chars = str_repeat ( '0123456789', 3 );
			break;
		case 2 :
			$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' . $addChars;
			break;
		case 3 :
			$chars = 'abcdefghijklmnopqrstuvwxyz' . $addChars;
			break;
		default :
			// 默认去掉了容易混淆的字符oOLl和数字01，要添加请使用addChars参数
			$chars = 'ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789' . $addChars;
			break;
	}
	if ($len > 10) { //位数过长重复字符串一定次数
		$chars = $type == 1 ? str_repeat ( $chars, $len ) : str_repeat ( $chars, 5 );
	}
	if ($type != 4) {
		$chars = str_shuffle ( $chars );
		$str = substr ( $chars, 0, $len );
	} else {
		// 中文随机字
		for($i = 0; $i < $len; $i ++) {
			$str .= msubstr ( $chars, floor ( mt_rand ( 0, mb_strlen ( $chars, 'utf-8' ) - 1 ) ), 1 );
		}
	}
	return $str;
}
function pwdHash($password, $type = 'md5') {
	return hash ( $type, $password );
}
	// 组合字段所需的函数
	function new_stripslashes($string)
	{
	if(!is_array($string)) return stripslashes($string);
	foreach($string as $key => $val) $string[$key] = new_stripslashes($val);
	return $string;
	}
	//获得setting数组
	function setting_get($setting)
	{
		if($setting) eval("\$setting = $setting;");
		else $setting = array();
		return $setting;
	}

	
/*
 * 字符串截取
 * from discuz
 */
function cutstr($string, $length, $dot = ' ...',$charset='UTF-8') {
	if(strlen($string) <= $length) {
		return $string;
	}

	$string = str_replace(array('&amp;', '&quot;', '&lt;', '&gt;'), array('&', '"', '<', '>'), $string);

	$strcut = '';
	if(strtolower($charset) == 'utf-8') {
		$n = $tn = $noc = 0;
		while($n < strlen($string)) {
			$t = ord($string[$n]);
			if($t == 9 || $t == 10 || (32 <= $t && $t <= 126)) {
				$tn = 1; $n++; $noc++;
			} elseif(194 <= $t && $t <= 223) {
				$tn = 2; $n += 2; $noc += 2;
			} elseif(224 <= $t && $t < 239) {
				$tn = 3; $n += 3; $noc += 2;
			} elseif(240 <= $t && $t <= 247) {
				$tn = 4; $n += 4; $noc += 2;
			} elseif(248 <= $t && $t <= 251) {
				$tn = 5; $n += 5; $noc += 2;
			} elseif($t == 252 || $t == 253) {
				$tn = 6; $n += 6; $noc += 2;
			} else {
				$n++;
			}

			if($noc >= $length) {
				break;
			}

		}
		if($noc > $length) {
			$n -= $tn;
		}

		$strcut = substr($string, 0, $n);
	} else {
		for($i = 0; $i < $length; $i++) {
			$strcut .= ord($string[$i]) > 127 ? $string[$i].$string[++$i] : $string[$i];
		}
	}

	$strcut = str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $strcut);
	return $strcut.$dot;
}	
	
//取消HTML代码
function shtmlspecialchars($string) {
	if(is_array($string)) {
		foreach($string as $key => $val) {
			$string[$key] = shtmlspecialchars($val);
		}
	} else {
		$string = preg_replace('/&amp;((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)/', '&\\1',
			str_replace(array('&', '"', '<', '>'), array('&amp;', '&quot;', '&lt;', '&gt;'), $string));
	}
	return $string;
}	
/**
 * fun:过滤Html内容
 * author:wanqing
 * @param unknown_type $str
 * @return unknown
 */
function filterHtml($str)
{
  $farr = array(
          "/<!DOCTYPE([^>]*?)>/eis",
          "/<(\/?)(html|body|head|link|meta|base|input|div|p|br)([^>]*?)>/eis",
          "/<(script|i?frame|style|title|form)(.*?)<\/\\1>/eis",
          "/(<[^>]*?\s+)on[a-z]+\s*?=(\"|')([^\\2]*)\\2([^>]*?>)/isU",//过滤javascript的on事件
          "/\s+/",//过滤多余的空白
          "/&nbsp;/",
          "/&mdash;/",
          "/&ldquo;/",
          "/&rdquo;/",
          "/&lsquo;/",
          "/&rsquo/",
        );
  $tarr = array(
          "",
          "",
          "",
          "\\1\\4",
          " ",
          "",
          "",
          "",
          "",
          "",
          "",
        );
  $str = preg_replace( $farr,$tarr,$str);
  $farr = array(
          "&nbsp;",
          "&mdash;",
          "&ldquo;",
          "&rdquo;",
          "&lsquo;",
          "&rsquo;",
          );
  $tarr = array('','','','','','',);
  $str = str_replace($farr, $tarr, $str);
  $str = strip_tags($str);
  return $str;
}

//SMTP邮件发送
//$address 收件人
//$subject 邮件标题
//$body 邮件主体
function mailsendsmtp($address, $subject, $body)
{
    set_time_limit(0);
    //加载phpmailer
    Vendor('PhpMailer.class#phpmailer');
    $mail = new PHPMailer();
    
    //参数设置
    $mail->CharSet ="UTF-8";
    $mail->IsSMTP(); // send via SMTP
    $mail->Host = "smtp.sina.com"; // SMTP servers
    $mail->SMTPAuth = true; // turn on SMTP authentication
    $mail->Username = "jiyongqu"; // SMTP username
    $mail->Password = "1147850"; // SMTP password
    $mail->From = "jiyongqu@sina.com";
    $mail->FromName = "qujy";
    $mail->WordWrap = 50; // set word wrap 
    $mail->IsHTML(true); // send as HTML

    //邮件内容
    $mail->Subject = $subject;
    $mail->AltBody = $subject;
    $mail->Body = $body;

    //添加地址
    $mail->AddAddress($address);

    //发送
    $r = $mail->Send();
    if(!$r)
    {
        echo "Message was not sent <p>";
        echo "Mailer Error: ".$mail->ErrorInfo;
        return false;
    }
    else {
        echo "Message has been sent";
        return true;
    }
}
//sendmail发送邮件
function mailsendmail($address, $subject, $body)
{
    set_time_limit(0);

    //中文编码
    //$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
    //$content = "=?UTF-8?B?".base64_encode($content)."?=";

    //加载phpmail
    Vendor('PhpMailer.class#phpmailer');
    $mail = new PHPMailer();
    //设置
    $mail->IsSendmail(); // telling the class to use SendMail transport
    $mail->IsHTML(true); // send as HTML
    $mail->CharSet = "UTF-8";
    $mail->AddReplyTo("tuspark@tuspark.com","启迪在线");
    $mail->SetFrom('tuspark@tuspark.com', '启迪在线');
    $mail->AddReplyTo("tuspark@tuspark.com","启迪在线");
    $mail->AddAddress($address);
    
    //Encode
    $subject = $mail->EncodeHeader($subject,'txt',1);
    $mail->Subject    = $subject;
    $mail->AltBody    = $subject; // optional, comment out and test
    $mail->MsgHTML($body);

    //发送
    $r = $mail->Send();
    if(!$r)
    {
        return false;
    }
    else {
        return true;
    }

}

//为ucCenter添加用户
/***
  *@username,用户名
  *@password,密码
  *@email,邮件
  */
function add_ucmember($username, $password, $email)
{
    if(!$username || !$password || !$email) return false;
    
    $model = D('Ucmembers');
    
    //随机数
    $salt = substr(uniqid(rand()), -6);
	$password = md5(md5($password).$salt);
    $data['username'] = $username;
    $data['password'] = $password;
    $data['email'] = $email;
    $data['salt'] = $salt;
    $data['regdate'] = time();
    
    $uid = $model->data($data)->add();
    if($uid)
    {

        unset($data);
        $data['uid'] = $uid;
        $model = D('Ucmemberfields');
        $model->data($data)->add();
    }
    return true;
}




//将字符转批量化为拼音 : 你好吗 -> nihaoma
// By gongdean
//
//$str	= iconv("UTF-8", "GB2312","你好吗");
//echo ch2en($str);
//     
function ch2en($str){
	$ret="";
	for($i=0;$i<strlen($str);$i++){ 
		
		$p=ord(substr($str,$i,1)); 
		if($p>160){ 
			$q=ord(substr($str,++$i,1)); 
			$p=$p*256+$q-65536; 
		} 
		
		$ret.= ch2en_g($p); 
	} 
	return $ret;
}
function ch2en_g($num){ 
	$d=array( 
		array("a",-20319), 
		array("ai",-20317), 
		array("an",-20304), 
		array("ang",-20295), 
		array("ao",-20292), 
		array("ba",-20283), 
		array("bai",-20265), 
		array("ban",-20257), 
		array("bang",-20242), 
		array("bao",-20230), 
		array("bei",-20051), 
		array("ben",-20036), 
		array("beng",-20032), 
		array("bi",-20026), 
		array("bian",-20002), 
		array("biao",-19990), 
		array("bie",-19986), 
		array("bin",-19982), 
		array("bing",-19976), 
		array("bo",-19805), 
		array("bu",-19784), 
		array("ca",-19775), 
		array("cai",-19774), 
		array("can",-19763), 
		array("cang",-19756), 
		array("cao",-19751), 
		array("ce",-19746), 
		array("ceng",-19741), 
		array("cha",-19739), 
		array("chai",-19728), 
		array("chan",-19725), 
		array("chang",-19715), 
		array("chao",-19540), 
		array("che",-19531), 
		array("chen",-19525), 
		array("cheng",-19515), 
		array("chi",-19500), 
		array("chong",-19484), 
		array("chou",-19479), 
		array("chu",-19467), 
		array("chuai",-19289), 
		array("chuan",-19288), 
		array("chuang",-19281), 
		array("chui",-19275), 
		array("chun",-19270), 
		array("chuo",-19263), 
		array("ci",-19261), 
		array("cong",-19249), 
		array("cou",-19243), 
		array("cu",-19242), 
		array("cuan",-19238), 
		array("cui",-19235), 
		array("cun",-19227), 
		array("cuo",-19224), 
		array("da",-19218), 
		array("dai",-19212), 
		array("dan",-19038), 
		array("dang",-19023), 
		array("dao",-19018), 
		array("de",-19006), 
		array("deng",-19003), 
		array("di",-18996), 
		array("dian",-18977), 
		array("diao",-18961), 
		array("die",-18952), 
		array("ding",-18783), 
		array("diu",-18774), 
		array("dong",-18773), 
		array("dou",-18763), 
		array("du",-18756), 
		array("duan",-18741), 
		array("dui",-18735), 
		array("dun",-18731), 
		array("duo",-18722), 
		array("e",-18710), 
		array("en",-18697), 
		array("er",-18696), 
		array("fa",-18526), 
		array("fan",-18518), 
		array("fang",-18501), 
		array("fei",-18490), 
		array("fen",-18478), 
		array("feng",-18463), 
		array("fo",-18448), 
		array("fou",-18447), 
		array("fu",-18446), 
		array("ga",-18239), 
		array("gai",-18237), 
		array("gan",-18231), 
		array("gang",-18220), 
		array("gao",-18211), 
		array("ge",-18201), 
		array("gei",-18184), 
		array("gen",-18183), 
		array("geng",-18181), 
		array("gong",-18012), 
		array("gou",-17997), 
		array("gu",-17988), 
		array("gua",-17970), 
		array("guai",-17964), 
		array("guan",-17961), 
		array("guang",-17950), 
		array("gui",-17947), 
		array("gun",-17931), 
		array("guo",-17928), 
		array("ha",-17922), 
		array("hai",-17759), 
		array("han",-17752), 
		array("hang",-17733), 
		array("hao",-17730), 
		array("he",-17721), 
		array("hei",-17703), 
		array("hen",-17701), 
		array("heng",-17697), 
		array("hong",-17692), 
		array("hou",-17683), 
		array("hu",-17676), 
		array("hua",-17496), 
		array("huai",-17487), 
		array("huan",-17482), 
		array("huang",-17468), 
		array("hui",-17454), 
		array("hun",-17433), 
		array("huo",-17427), 
		array("ji",-17417), 
		array("jia",-17202), 
		array("jian",-17185), 
		array("jiang",-16983), 
		array("jiao",-16970), 
		array("jie",-16942), 
		array("jin",-16915), 
		array("jing",-16733), 
		array("jiong",-16708), 
		array("jiu",-16706), 
		array("ju",-16689), 
		array("juan",-16664), 
		array("jue",-16657), 
		array("jun",-16647), 
		array("ka",-16474), 
		array("kai",-16470), 
		array("kan",-16465), 
		array("kang",-16459), 
		array("kao",-16452), 
		array("ke",-16448), 
		array("ken",-16433), 
		array("keng",-16429), 
		array("kong",-16427), 
		array("kou",-16423), 
		array("ku",-16419), 
		array("kua",-16412), 
		array("kuai",-16407), 
		array("kuan",-16403), 
		array("kuang",-16401), 
		array("kui",-16393), 
		array("kun",-16220), 
		array("kuo",-16216), 
		array("la",-16212), 
		array("lai",-16205), 
		array("lan",-16202), 
		array("lang",-16187), 
		array("lao",-16180), 
		array("le",-16171), 
		array("lei",-16169), 
		array("leng",-16158), 
		array("li",-16155), 
		array("lia",-15959), 
		array("lian",-15958), 
		array("liang",-15944), 
		array("liao",-15933), 
		array("lie",-15920), 
		array("lin",-15915), 
		array("ling",-15903), 
		array("liu",-15889), 
		array("long",-15878), 
		array("lou",-15707), 
		array("lu",-15701), 
		array("lv",-15681), 
		array("luan",-15667), 
		array("lue",-15661), 
		array("lun",-15659), 
		array("luo",-15652), 
		array("ma",-15640), 
		array("mai",-15631), 
		array("man",-15625), 
		array("mang",-15454), 
		array("mao",-15448), 
		array("me",-15436), 
		array("mei",-15435), 
		array("men",-15419), 
		array("meng",-15416), 
		array("mi",-15408), 
		array("mian",-15394), 
		array("miao",-15385), 
		array("mie",-15377), 
		array("min",-15375), 
		array("ming",-15369), 
		array("miu",-15363), 
		array("mo",-15362), 
		array("mou",-15183), 
		array("mu",-15180), 
		array("na",-15165), 
		array("nai",-15158), 
		array("nan",-15153), 
		array("nang",-15150), 
		array("nao",-15149), 
		array("ne",-15144), 
		array("nei",-15143), 
		array("nen",-15141), 
		array("neng",-15140), 
		array("ni",-15139), 
		array("nian",-15128), 
		array("niang",-15121), 
		array("niao",-15119), 
		array("nie",-15117), 
		array("nin",-15110), 
		array("ning",-15109), 
		array("niu",-14941), 
		array("nong",-14937), 
		array("nu",-14933), 
		array("nv",-14930), 
		array("nuan",-14929), 
		array("nue",-14928), 
		array("nuo",-14926), 
		array("o",-14922), 
		array("ou",-14921), 
		array("pa",-14914), 
		array("pai",-14908), 
		array("pan",-14902), 
		array("pang",-14894), 
		array("pao",-14889), 
		array("pei",-14882), 
		array("pen",-14873), 
		array("peng",-14871), 
		array("pi",-14857), 
		array("pian",-14678), 
		array("piao",-14674), 
		array("pie",-14670), 
		array("pin",-14668), 
		array("ping",-14663), 
		array("po",-14654), 
		array("pu",-14645), 
		array("qi",-14630), 
		array("qia",-14594), 
		array("qian",-14429), 
		array("qiang",-14407), 
		array("qiao",-14399), 
		array("qie",-14384), 
		array("qin",-14379), 
		array("qing",-14368), 
		array("qiong",-14355), 
		array("qiu",-14353), 
		array("qu",-14345), 
		array("quan",-14170), 
		array("que",-14159), 
		array("qun",-14151), 
		array("ran",-14149), 
		array("rang",-14145), 
		array("rao",-14140), 
		array("re",-14137), 
		array("ren",-14135), 
		array("reng",-14125), 
		array("ri",-14123), 
		array("rong",-14122), 
		array("rou",-14112), 
		array("ru",-14109), 
		array("ruan",-14099), 
		array("rui",-14097), 
		array("run",-14094), 
		array("ruo",-14092), 
		array("sa",-14090), 
		array("sai",-14087), 
		array("san",-14083), 
		array("sang",-13917), 
		array("sao",-13914), 
		array("se",-13910), 
		array("sen",-13907), 
		array("seng",-13906), 
		array("sha",-13905), 
		array("shai",-13896), 
		array("shan",-13894), 
		array("shang",-13878), 
		array("shao",-13870), 
		array("she",-13859), 
		array("shen",-13847), 
		array("sheng",-13831), 
		array("shi",-13658), 
		array("shou",-13611), 
		array("shu",-13601), 
		array("shua",-13406), 
		array("shuai",-13404), 
		array("shuan",-13400), 
		array("shuang",-13398), 
		array("shui",-13395), 
		array("shun",-13391), 
		array("shuo",-13387), 
		array("si",-13383), 
		array("song",-13367), 
		array("sou",-13359), 
		array("su",-13356), 
		array("suan",-13343), 
		array("sui",-13340), 
		array("sun",-13329), 
		array("suo",-13326), 
		array("ta",-13318), 
		array("tai",-13147), 
		array("tan",-13138), 
		array("tang",-13120), 
		array("tao",-13107), 
		array("te",-13096), 
		array("teng",-13095), 
		array("ti",-13091), 
		array("tian",-13076), 
		array("tiao",-13068), 
		array("tie",-13063), 
		array("ting",-13060), 
		array("tong",-12888), 
		array("tou",-12875), 
		array("tu",-12871), 
		array("tuan",-12860), 
		array("tui",-12858), 
		array("tun",-12852), 
		array("tuo",-12849), 
		array("wa",-12838), 
		array("wai",-12831), 
		array("wan",-12829), 
		array("wang",-12812), 
		array("wei",-12802), 
		array("wen",-12607), 
		array("weng",-12597), 
		array("wo",-12594), 
		array("wu",-12585), 
		array("xi",-12556), 
		array("xia",-12359), 
		array("xian",-12346), 
		array("xiang",-12320), 
		array("xiao",-12300), 
		array("xie",-12120), 
		array("xin",-12099), 
		array("xing",-12089), 
		array("xiong",-12074), 
		array("xiu",-12067), 
		array("xu",-12058), 
		array("xuan",-12039), 
		array("xue",-11867), 
		array("xun",-11861), 
		array("ya",-11847), 
		array("yan",-11831), 
		array("yang",-11798), 
		array("yao",-11781), 
		array("ye",-11604), 
		array("yi",-11589), 
		array("yin",-11536), 
		array("ying",-11358), 
		array("yo",-11340), 
		array("yong",-11339), 
		array("you",-11324), 
		array("yu",-11303), 
		array("yuan",-11097), 
		array("yue",-11077), 
		array("yun",-11067), 
		array("za",-11055), 
		array("zai",-11052), 
		array("zan",-11045), 
		array("zang",-11041), 
		array("zao",-11038), 
		array("ze",-11024), 
		array("zei",-11020), 
		array("zen",-11019), 
		array("zeng",-11018), 
		array("zha",-11014), 
		array("zhai",-10838), 
		array("zhan",-10832), 
		array("zhang",-10815), 
		array("zhao",-10800), 
		array("zhe",-10790), 
		array("zhen",-10780), 
		array("zheng",-10764), 
		array("zhi",-10587), 
		array("zhong",-10544), 
		array("zhou",-10533), 
		array("zhu",-10519), 
		array("zhua",-10331), 
		array("zhuai",-10329), 
		array("zhuan",-10328), 
		array("zhuang",-10322), 
		array("zhui",-10315), 
		array("zhun",-10309), 
		array("zhuo",-10307), 
		array("zi",-10296), 
		array("zong",-10281), 
		array("zou",-10274), 
		array("zu",-10270), 
		array("zuan",-10262), 
		array("zui",-10260), 
		array("zun",-10256), 
		array("zuo",-10254) 
	); 
	if($num>0&&$num<160){ 
		return chr($num);
	}
	elseif($num<-20319 or $num>-10247){ 
		return "";
	}else{
		for($i=count($d)-1;$i>=0;$i--){if($d[$i][1]<=$num)break;}
		return $d[$i][0];
	}
}







?>
